<!DOCTYPE html>
<html lang="zh-cn" color-mode="light">

  <head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <meta name="keywords" content="" />
  <meta name="author" content="郁涛丶" />
  <meta name="description" content="" />
  
  
  <title>
    
      胡言乱语&amp;自言自语 
      
      
      |
    
     郁涛丶&#39;s Blog
  </title>

  
    <link rel="apple-touch-icon" href="/images/favicon.png">
    <link rel="icon" href="/images/favicon.png">
  

  <!-- Raleway-Font -->
  <link href="https://fonts.googleapis.com/css?family=Raleway&display=swap" rel="stylesheet">

  <!-- hexo site css -->
  
<link rel="stylesheet" href="/css/color-scheme.css">
<link rel="stylesheet" href="/css/base.css">
<link rel="stylesheet" href="//at.alicdn.com/t/font_1886449_67xjft27j1l.css">
<link rel="stylesheet" href="/css/github-markdown.css">
<link rel="stylesheet" href="/css/highlight.css">
<link rel="stylesheet" href="/css/comments.css">

  <!-- 代码块风格 -->
  
    
<link rel="stylesheet" href="/css/figcaption/mac-block.css">

  

  <!-- jquery3.3.1 -->
  
    <script defer type="text/javascript" src="/plugins/jquery.min.js"></script>
  

  <!-- fancybox -->
  
    <link href="/plugins/jquery.fancybox.min.css" rel="stylesheet">
    <script defer type="text/javascript" src="/plugins/jquery.fancybox.min.js"></script>
  
  
<script src="/js/fancybox.js"></script>


  

  <script>
    var html = document.documentElement
    const colorMode = localStorage.getItem('color-mode')
    if (colorMode) {
      document.documentElement.setAttribute('color-mode', colorMode)
    }
  </script>
<!-- hexo injector head_end start -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css">

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/hexo-math@4.0.0/dist/style.css">
<!-- hexo injector head_end end --><meta name="generator" content="Hexo 5.4.0"><link rel="alternate" href="/atom.xml" title="郁涛丶's Blog" type="application/atom+xml">
</head>


  <body>
    <div id="app">
      <div class="header">
  <div class="avatar">
    <a href="/">
      <!-- 头像取消懒加载，添加no-lazy -->
      
        <img src="/images/avatar.png" alt="">
      
    </a>
    <div class="nickname"><a href="/">Ghostasky</a></div>
  </div>
  <div class="navbar">
    <ul>
      
        <li class="nav-item" data-path="/">
          <a href="/">Home</a>
        </li>
      
        <li class="nav-item" data-path="/archives/">
          <a href="/archives/">Archives</a>
        </li>
      
        <li class="nav-item" data-path="/categories/">
          <a href="/categories/">Categories</a>
        </li>
      
        <li class="nav-item" data-path="/tags/">
          <a href="/tags/">Tags</a>
        </li>
      
        <li class="nav-item" data-path="/about/">
          <a href="/about/">About</a>
        </li>
      
    </ul>
  </div>
</div>


<script src="/js/activeNav.js"></script>



      <div class="flex-container">
        <!-- 文章详情页，展示文章具体内容，url形式：https://yoursite/文章标题/ -->
<!-- 同时为「标签tag」，「朋友friend」，「分类categories」，「关于about」页面的承载页面，具体展示取决于page.type -->


    <!-- LaTex Display -->

  
    <script async type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
  
  <script>
    MathJax = {
      tex: {
        inlineMath: [['$', '$'], ['\\(', '\\)']]
      }
    }
  </script>


        
            
                <!-- clipboard -->

  
    <script async type="text/javascript" src="/plugins/clipboard.min.js"></script>
  
  
<script src="/js/codeCopy.js"></script>



                    
                        
                                
                                        
                                                
                                                        
                                                            <!-- 文章内容页 url形式：https://yoursite/文章标题/ -->
                                                            <div class="container post-details" id="post-details">
                                                                <div class="post-content">
                                                                    <div class="post-title">
                                                                        胡言乱语&自言自语
                                                                    </div>
                                                                    <div class="post-attach">
                                                                        <span class="post-pubtime">
        <i class="iconfont icon-updatetime" title="Update time"></i>
        2099-12-31
      </span>

                                                                        <span class="post-pubtime"> 本文共22字 </span>

                                                                        <span class="post-pubtime">
        大约需要1min
      </span>

                                                                        
                                                                                    <span class="post-categories">
        <i class="iconfont icon-bookmark" title="Categories"></i>
        
        <span class="span--category">
          <a href="/categories/Life/" title="Life">
            <b>#</b> Life
          </a>
        </span>
                                                                                    
                                                                                        </span>
                                                                                        
                                                                            <span class="post-tags">
        <i class="iconfont icon-tags" title="Tags"></i>
        
        <span class="span--tag">
          <a href="/tags/Life/" title="Life">
            <b>#</b> Life
          </a>
        </span>
                                                                            
                                                                                </span>
                                                                                
                                                                    </div>
                                                                    <div class="markdown-body">
                                                                        <div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="风中传来苦咸，是悔恨的气味吗?" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">
  <script id="hbeData" type="hbeData" data-hmacdigest="21f2834ab8b4b6dfa9968b857be1c0603e93a201a42c7a84b3b6a1b0fb33d784">f045e053d6254bea7b0b1b710a9b6ff6ee808f17c634cf47e95b836d3b9b6b47c2d48c5194723e46875b63a4ad4bb30ddb46515dad4c6817dcf97ff2fd31abe6b1ae73d39489829d0886485b91db00013dfd3808e3a9e4dcb735fba99f44bf6af60022b8c4ac00bf648e221e9108efe76c9e0533dd01e9a0db710b38c0e695a85f73d43ad832f8336e5852c2d0409857a1cd5735fa3e0d2da121b29a64586f11de8c9b4636db1c9ff946a29534ba37769bae857cdcff65e37b01df3a64a68febcb751ae0c29f3dc0450c16d89a85ba07681e6527d0b4f33eb51ed46f6aaefe5433b6eaabf953982b3b4ff7e827d1b547a68e2be0b0b79b5e53b96fa065c37a59d49c6a4f6a07d86134650215da0ef9ceab904209006463d89767e87f5cd1d16826ec9912ce019eba28142f934396712ee13766ca85d8ebc30a42c6c05e42a8d8bb959392f25bbe466e16c1773d1cd1e56c7c44c3e46cd45595c8fcaecc04daa7b2866f58e9fc6a6e5c8fd2c245a43b4a29de924f6af7e2ce8011901b5b8ae331d537fbfc9022c29ae01c9c2bef5c2f0dcdf6a084ba6b10c1a3168c2b4b119cd082a20c343f88adfe2e0d9483bf5e130b39b1a0fefa7673f2ac61e1ce332d9c6ffeff66d9486228a6d142f61a91d7ee1c9a0d50aeaa063b7c44705ff22718fd5cde6ea315738e67315316fd5015042e0f6216ee1ae84e269c85bba0e386174e1506aa600f6e29bce9835fd195e6c66496b643bae32dc9673e02f1b9fe0c6e0ecd6a0a5045068c1db06838ad6386514eeb8c40e0707da1af93fcbf95118d1b7cf1a9683155a64fb384cb79f7502491d0b204f633728e9ec119c6f50aa2fe3f9660c274bab740ef5680c201d6bb51a2e02ada226fa523bf8854ceacf0b477ebc06b708707d7f5dbfcd3b243718bd46da2d9dbc7156f7a296b78672a3b047cb16eb2466d97110fa60bc95034d70f712e9e2a03ebccd6914a705a162035f5144fe86c5b6a388569ea658d304d3e342db6ce933169df99dca20b732d3315e537542886471c50d6cdd504a0447f9410dc0758373c36739a759279fa1a9cd2794857734eb175c3a5f94c0ce0f28156cc3c0588a3c62488970e4d02f1cb64472bd0a68af9e799b8680974d2da76e44f19505d76fa29dd9f5a7de064451607064b1c98a89a5d4f085fa288970f1dd69daec60254c17bf5917847caee3a973ba9792c6518875161744ab2ac64dc482116a5df2544cc748f5fcdae412496ceb491261b54e4965507f97207c7f504d5865684c4aa086d9da970ee26633c2cd3bcff08bb46f7a3d8018264262490e959c9014549d4113fa96c3b9bc7ea2b87328f440526729ab254ce21a6fd582471e210e467271389de7220e703153cf9e1025015e9fd7729eb4af5622bf0f91148bec143557205751e7505105ee2ac951f95d0d7cf916ac8d1f9935ffa7288a30054f09ab683b42cf0d1eb29cc33106e7e123bf129855f7ab84b9b22e0d56a79f05c733043d4884e69af9fe1dd39dd71dad74536ea9880c7ae2e00c7c12ecb87b6416ea03413da7771866f240aebccafeb27fe732ba00e0f80991f476273c2edf1d588f642a0f165e2ca7132fab24e1a137e2724b2ff622405b152877ee2fd28dc3729335e7ff9f97d5bdab32be19c45209c7b975c30ce1092282721d6567146252100e1a7de261481e00bba189d163a6c3bb510698b10701afba43ccbf025e186f2b3c95f63b0babc57a3b7af34a9d9cb9010d0e10d34d99562be602d17db4a1576ba7e5386eb6ba61e66da6823771234c80004418e9f3f1c9001137a0e6d45852910864719caf644d33646a920672f34be0cdd51dde9089f5f04edb8ba86de7508588624e76d3509175824c79279e7bdd33c86cd207eec31a0f75e570ebb3d0b559311ce4a70145eb2436e94aae1290cdc98c4739fa478da698211e72dbaeef02cc92baccdea765cd6a17eb7f81bb5a82d43ddc2316fed1950789410baeaa7099f9256d7ea0db25bd035c3f19f5c505d6e2f793278fab07eb98a039518ff833813520b87cbd1a1cb7fc2c2ef527e7c43aa5cdbd3eb04c43b56a57e8615958e903781a87699d33ed960cf935d47c76cbca352071b959c8d435918a142dbcc77b9005f5d759262d2ed37d588fdcf64192ae65f0ac5fee073dc5fd772c73ee44ec875d3495cde268c9a853bdda6cb3f152f8a8890ced5ab72ca8f7312b8f7b2a475abf60b854605425c8054decd8b45101bbbb200aadc1b9b396d9dc030c8ca9e5680e3f2db0f570688dd1540df060f36013dec13af34cade65d5ca710fd99e43fafa3da565471d3da60f132111b1303ca82b46ad6fc25cfdd78095a375fac3fdf57c523a8de5ad7e81a897b1934f524196cdd82f59263e60ebf9bebf171dd45abd688519cfcf0f19f7a33dfbd41870a246595e2c88b01d6ff42d9bc814c2daa727a49ac133c964e5254992fc9c2d31912a9e88b510734633c86433bd4abbb7f9ae7d9a91dc819c37b6b8a50f3a5d3b131589c3609a9e90c53777fb9de2917f495ace7877c28581fa0a3b0d3b07affe5d0e0d6b894831cc8d8647838a2f8a4346a7ad467871be9587a73b1c3942f8b216679f5bdaae25c997958206920cdee7c50ab446822bcd7a94dbf762085e1d60d842826b3a0be21e8e16a7341b0fcb3b2bd7b148c8473be01040927891966f170fd56625b5501a0a49535b7517918b031e6c644ba884220004b08ba77fe3170424d51717caa7e1b4da974c1a33df17ff21ec61b13c58f0d25525da602417374ec291bc786968ec7bdd98245c963158ddde3f1bb16b8e7b22e4a9c6531fa973d02d11ad12e0acad0c65b970fc3e5c09c3f64293769a995bf5b8a826d732a61b41fa6309af19cf158a52307f656cbbafac066555768d1201064fa1f67b044f729477651b898982c3ef872af202b201e24a3561036e9c6b3a68aa1885bd1eacadd33f2c6279fc0013ce23125fb5945d1b477d5042ba1eec31aa49f98fce994689814e4f0b69b37fc12d122942bfbc567464e41482fbbb4c9ddd4fdac9f0d05dbffe5ee2542577785aaf8b5153463bc0160ed77ef13a63e9a3a1486f485e6555a2d1febfb49909a10711432dc651336e58cb78df20897850a11a2c83fefc702edb42817adfff6c6a29cfc5339806cdfa333960fa002bb686f7f6a4bdeeac6c1068a369c8739be84f061c6b101c5aa9ea26cafa6b2f08ccfa1a4ae94c3891f119829920a3d2db287a10959b6a6fa8a65b581db9e4daf420a788a64b77da8f560d721db07a103bfa34b36d121bdce921b724cc83bff2d6f912940e57cd4291d3e0245af2f3c1005c14b0fce4429494c94276ec10b7122282d16ac0d1a3afbb9bbe100cc976f8bc56028471043a019b548997f3b78222fc76b8ea13376ce59dcb894299e8d52b6437b837feebb069acae644ec94c1fe687ac14aa43ea27d2d44355063844ae58093896df73e618629053c641d064d4af1fe0c952b20e230bdcc76370397c94f5e13f56e00e41b77edfb25ac735a3ee042fa953bea8efa009e1145c2cd9058e43818567e0fc4c37a4117c49360916cb2f475c2a00b39e395aa3fc76b039b4f68ed70474d90a4b3e8adcb0f1fb349a5606b2234e4b3c501f7a7db180c43c180871fef4a776ada933a7587555ded5ed0acabe6445f71df1ba9370915f3dcbe6bbb46e3a0a6f6f162f5ddfaab332bc9feb49a973c2f3cb1e17f6dd6c9aa3fe3777052214c76621544ad55fe687a770f75d516ebad1829da0429bfeb864c438d705d10af23b4a943aa35a516b96bc57e334116a263b6f4d469698eaaa6bc24f1f8497fe11ba53090636e2c77c8d5693753a48f5d14a74d8e40a9110ec889ddd4ebcf3a31d118539c19f76f036039c156c6a72f8db3493d7f94aba4545dd5632c4d7dccc66d84848e776250e7f3988ae12ace920a358e17ed369c831029bf6ee6b1d0b9892e1c40441659077ca419555fc51cbdb50584a4eecdbfb5b7df5764797b2246f3aa27aaa2fa4fc7ba630c0870b9d079593577d7bc19b1c2db0c166436aaa792c06a3a9b0524635366f8de0d8aee2049f2ef2498eaceb60fde338c4aa8ae0a73c9f290017f951a393f0fd94f0a68df26b6dc599c7521fec067f7a6bc86fea819d789ec60672ff6b01fd8f49dbdfa98c4d1c92d82ef22fd24a769ac79c5d4effa5d06bea9d63692020691548bdd9ab983a584fcfe162ae24ad94373f21d8481c9e8501653eff0926303058d35878e45c113c52346b94b4f25f5c8cfee701e95681ff747aa24ca7371bad15068958038fb2cb5708b92d3cb204fa13d4b6fbfdb9da0f7807d8ed8355fbb0bf7bd4c13f4ee26c766baa577d726aea02c60db4c1ced80c69f732965bdb53786d8b7e89dba5f9faf1c9c8638207e371e813ab0b7a5257d2cf0c8763b6fe283afff829e55617afac49588d10797087b9990a34e7b31fe752b43809bd2be131f3c2cd890742e5d5bb5376a1496c26800b8fea72518b175b46567d882016d633dc51d05e3ec9131088e391becda5f15970e435b8f04e9b086c3d1c8274864d1475eb2963f3d6021dfa8b4bef44e05e51d5e097c8a128b9f9fb362703f0b82fdb2a9a10cf2cf6e7ec2d3e354c4f95968cf3c112f9a2455a4cfb950e59a122ace408d65fd3966bdb0a0061f053bce029b72ea3026599ef6eb3cf56211def857fb9dd837121594d15763e127b6d7be40b48f799e9de262a8c634326f254df8d9d4944043242778151f9c0e26428d95a0c7a5d6db4eb8b0843bc4fe89743ae9abd313777aa20ee1d6e6e15338856a15f31106cb319f8db0860f96d0bac05f137837b6f7392b9e1a110c8ad3d77760aa9b5f48f0a23888956bb0c1219041769412a72281a7d035be7d1b01560793ea6c922fc71ff56095a718ceee8847459f8d24935dc6ca5bfa5bc8f8104808b2bbc8786ddd57366a9b4e55fd5f3564da0192bb4413d022bb03d07054e76a86d4da203a4c84f1024414878d65e762839d580544ff71164389ec64acfd6bd8cb070e689e504eedcbbe88977ccc200fe5536656b59b7d51a97ef1937a198cd20894cedd1fb3aa7289cff1bba687661a1d40eeff3d5e6f5ceb64ab18bdbac6c92d9ce7594e0d22a69d7015dd7489fb54eb74cab4c909eb196458d51da093feaba4882ef3172e614ab38d14a5086f24ca78805f653b23d3021f0e23c18a0eae7a43a881a35762f9212de2baff8f0d2b7f2b6d50f9a2cc8717792746b5b3642f6de3a6a858b8790d8610d0cd8063a45e3ec6345460ea8e4cba9c3e889f2f249bd56eb21083c4d402e2cd91bd0624d7eaacd0d1776780f21a59df6208c09ef4cb86007938639182a7b4a532fbf23940d7e3bff8c95d769146da6a84b6db5b32709ba0a032d88c155ed9c5b798ceae9a49b0eefde27b5ade72ed87cdbeb1143c93aad7c0da4d2e08116254c19b55a74fd66a000d632aec972f5741a4d438079d3f5e724dd8424732496fde695a4f252d5b4755e36c4289cc3475089ca497eb0876cc72f618aeda0580252ddafa958bfec80da9aa9772144222bd44edc444829586aa0823b47436fb4071e3bd9ba3bb1aa415f2b8fffa464a070aa4fa8ab11adbdcaf4d16e7f6d08f6262445efcb4a7daf85a4fa4a1a33d1af978579b8a222640e896cfbcf927eefe935887c98124bfab578ca2e8cfc446b925ff6611fa7fc8fb547a7eb7dbbe4b7580cc6221296ca3c092509b6d9253357399d7b331ac9cf5d58ce929820b35dafd1af0a8dced4a4861abaa411423d7e0ef9a2398fe72744a85f0c40a4cd6070ff9a721224dc8259a1407897cf1bf47b4588ad615c3de1e29f00f4520d96dfab8ac0ae7b6e742e311f12c0c7508db90ceb596662f97cb068b740651e8789c195e9a3e04601142d59bfa7a2a21ee75d0e41737243d9b74bfcbffc4eb4ed155ff68a7465062b2a03234d21f980f1e47f057dd8bf36ccad1c69e4e686b99d54af9fe3aeaa7bc07969a1e2173d4b8530b479b87741f0b86ed483d9eae4543d7cfaa73eafd6914ce734d788500f8b09bb9ce77f584c382fd96ca2bf7d163a652deab4570945a42e21f838685fa5fa993209fd07599f517991401c11e8f9469b6421aee89972b045e786a4ad804ffab4e3dc085a18b6c4794d49928b574b019b14f25a497f70dbc8becbc65e4436ec6c330023f270dcaa8be899e1c4605aca2b710f7d2675a7080234c33908c6aac2f90f261c10a526224f019fcf660e9e6de1ffa2ac1f25cf8004add67806529acedeb550d7085501273dd22732f36e8bad0278c79b4482bdbbdc506036080ce37d1c40e3d364e99571f957223d5539cde9af78bb2a3f1da9595b82a0e865fdce942f418f82a533d27335fa9322e5b890d0525e98c213518df9ee21f0f4adeb764ae76ee186c31a980e5ede50bf41282f31ffde624b12033b8e48d9ace2a493f0ff7df98c9c3c7f7630fb0f8cc033a981f0cf8e23739dd177466d050d60eb80d7143cfb31d6c97d64930cf1eb2e04c5289f3a3e76de0c90dab051ad574a8a53256f8aa41713052b3be3a703af40255e029f268dc1987150f28e2a0169f552a51f011cda99e8ccd674ed0740121f85676dca79d048181c8be82c81bb0d8936b520547855db7ea4428c1d8815ad3706724eefbb8437869f40ed000fedb210d34638f638ac9263c2311dca0a20a2641d08cd9df75d0c43d18c320d24f287ac1d661643df07f2761920a1d23ac09d7b01bc5b233fad5ffcc63065c89ec9bb0ff0b25e42fec28bfe420e0c89856a74f76ea28f23917c66a14fc142dcc4b9c648a62045072ac1c082c5f155459ec6bcca89c28164c39f0d01867d68b75476af4b953dbb36aa341d4c6392e9a867226463552840da2416a69fc303ba86571f04ae60badd95cf68513a3738c2f8dc0214a607ef4fbf3c400e0c310dbea01217518fb3abdb74ccf540e591da5dac48d7171a5759b5d82fc10e4ae3a2bbc2dac4dc9d40f315ffaf2c0724fb36f42d2bdd06fff2c9f84929c09cd3861a6d5bdae273f391a7972559b9f71b000cd82c53d9f31903a7a59d8e4fe7862076de25c82daba50aadb5246fcda3aa2d573d6fb29e509a3d0da6b2d5b1ca331282a009d1cbbd93e6a06526f121e47d985679e1dca6aaf0e1af84e12c4b127ef844f5301416d2dfee193a0a82a058c6af51c1aa4a3d85ed01a8e0d825399c1588de2eb40202031cf6f9306c285e85ee29210bbf27f89051f01dfde1ed981b7a6722fdcdbcff52c44d18249c5678285472122089670fc53f837360ee925c78a4b7614627154e6738d8eea7282e22a30013bcb681e93779e04c904878d0738d0c81a15a7594375c4dacd26f41192b90a6a2f6dd34e375ba2cf97dc7531bd9d9e8c715eb37c90d8596eff14a139308e35d67c72974896a4a6cacfcebbd65c44ba796440d7f521718000aac3a5af2de13e393b08b0c4486ad62800d90bb2254da3c3edff68b773365339a208f884a1bb4aaa425658769b75a32a60162f5e097f5ec3d072b279a39e6b238b1e999d2eae4de78b1060835ebb7cc41406c4924029d49497cc1a27e94ff707508f9699a0238e8b202a8aef0d0e5924388cf104601fe9a5020b1d1efc4a9b2e1c87390d44e3d19253f686811fc04025989bc247790f2b0c5294befdd153078be063df0071af0318802794729a4b93bd207f8c026deb9e406841b220888d7a7c792a4bbf139cdeec4f9a8fba754a3210091431833e69956226b79bf8f6c85d78edc95529c072790161c336e3a2cbf3649c6e37cdc96b066c158c2a11d831221970bf37d6ce7f8ed139f66b58711105f9d8cdf1fdf1c5283a0911265bcf366754edb83798725a2fae66df3f0aa5f3854a2ba7059c20006d19469ea7ad6ad96e8e61fada75648aa219b54cdbe43a9e2469066dde65aaa2680196ff92f73542de8cbb8e114ce71f595e2921a0ba8a0ec4f0fc1164d7fe84a43a2e642bbb6964ed6fd7dbdc60fa4e27cd583f46e94949cfed998f7c9b9bd3248af0065f22ab775810768456deada1355b579870f1f370b3c00e021236c6b0102cfcd86e4a762c536ca1f7765c3910409b5e0a984977280f4028d5635839b093919f73a578c23aec71f23a9e395b24148cff18d1d86ea306aebacb8149e534f9ff29aaf05434506f6df7741074f5c5387f5e810698710f18406ef0a0e8e93460f534eda6d00ad42b0b04bf3a883bcfc148fa49813c78f4e202a60454d2043993d734216fb5460eeeef4425d60f88c901d8a2fc7877fc62d80e2b04a8e2f5b31b4b1e2b43e602f94639638e335b62ac6e3b62a6702bf82fa72bd40fef66ace428019bfd0f34bb7fc2121ce8c9249d67a65ddddd49fb8afaef14f3033ff10dc9eef07a7a7208c73309ccf27976b5a7015526b226fb8b65860935696fd5bd35e79cf19bb77ae9e34363f5e2ae4c494235f91ae3a5261db135508b8585509fc8b406fe28ed5421de2ef4f9188f4ad1ef79d5d058e84d46e5d8e7ec4ddbdbc50037132741cc81fa62264664d83c19cf061c011fb2f03f7b08bb1cea9210a352a0e59e5a0d91f80d0e2b43d9430320690bbb9496ddc9f5b7f66092a7b314f45163eb3b00f8eeeaa3def189296b2d763faf7d296b445a9fa7e2450e2c7cd30dced326992ddbd772648be540a11ec2bbe46ea27fcbf287f4fb98714a36a7bac3094c4996fb8e7e2943fa0c68473dfdeec70bc0c165c6947c98995f05ab4213fd91e09685c6dc59f71aa8d4205fde8ce68dda9a69e7491e8636a45c71551e6bb50be7cbd0e9824edb62669e548d871319ce02227c47274a1bcddac99ed9b7ab704cc632135db22b4964d7bbf34c232d5d29a475d650d690bc69ecf99a931a21fbe0406bfb4c0302e041d3569b223eb1152960cc719c0fdd75e4d627a6a5b8ed5d8e6ce10085872bbadcc809a46cc5ab4fc64f4119ef9fc0151be64e3bebddfbb8a36af231dd1f826e92800c0310328053aedf396e50790a833c3b8043af520c460768295d745fe48055a411f47cb2a5b3c464a715f7bb268a5ec1778698ea1e8670c928cb49f94531ad0fb3e1bc0330d5ab9c7741d9a27e2252bdd467a749e2c5a224a10532091a3ffc614ed5c3702142f5c1fc7faa39b762936640ce8f1be9b7bd4254c6292d786d23df62e80e9a24a0ab6a039174ac9fea601b29c52257c8ab7031edc59f76ecb01417f381dae0e4757c4e0324f2b5c5f62d6f92333d3a5a870bdf1810a5bdf250e730c9ed35cffb2c2d6cf73e9db117a3af60501fe7f194864efdee6305456b56f22288e71b8ac7647e95da8586b006575d518f783b0c1fb5aacfa32eeb797827a7d622ccb4ba57f7d9d957d872c435bd5b32933bd7e1dba23c3cee53bff3b7ba1f9da31a3b1251fef91e53a405552a6caf7cb4210e58e00e37513d745e3ff172b5566cfd2ed219550e61ca441209551fe1f390b1bf0a27bc26768d19546c6c74b939862b83068a2324b8421f0056d10cabf21893ad7709cc9c4d402f066c35288e6fd75698ed24341d5deaea72f769a176530cf4e7b69b222212a5f371e2ce38e0c1aaa1c73b31a0fad11a825aa7c51871996c054793377d27bf1659893326d7e7ef98c7441d1124d2c3ab1c400404181313e6d9126a64d94d6ba1f8a5a7ff63b98b91dea5be5260c280354a322b70196b6d40de4142ca07ad7dad3854840b27050ffcee267e1b2e393c7b9bb5fe7d8a6504aa03e7241a1eabeca7eaf91dd0daa5e8d3152e00bafe8bd590894a4bdeae5ad8e2980a7905c619f95c724326636999e7cd600e290a057a8f8bba4f39a5c481f3e2c3318325737300b097462d0b8bd811cc730e5118ae26fa630987d18de2751d637775c9d74b8ec99ef6b0c313332309ebc9e0cff67cbe05b6b4c9c37bc6b295af04ecfaf89be039a1c8e570842ad1b930b6c89c28cbc60b4dd2b5414e033c6932fc438a28b28662797e7c31c4aadbcf7ed5ebfbe397bd5c4c9e273ac4427f23333411ee9f0dbc5606377bb72b52305fac8d248bb849108c5b085f1c7a9106b46381dd2b81682613fff42f23afec819d95a7ef33f7f20fd34357ffc20a82f5fbeb1cbf98d609a7b55abcddde90067e5067e578d724d123f97470955d38419443e8631efd604e9866bac269ccec6637e40ec92ab4c1d84e3fd68fcd9cd2dc5a44c0ffdd140e6d318a7aeaab3f5c8192ef7b8579e9d1ab852878969f3e8b081546a9a0976180451c9f29bf2d16e06908ef6838cf5ea9159167dcd655fd1a485bf01a52855301051e09988d4074aa590525329e70f09b469f22f43476e20ebf803fa916e2f3feded161d3831b58c054ccf5c559ac6ba26a3ac6755b1b877dc9139be0e0b6d594aa47ba47da35238361fb2eddc5395aed8d2f24834475e4d87c75079da33110f9f48bae30a814f32165e8c37e67fd3396b3e4c73ac9eecce100d22e2b056f684cacd845846eae0696aec480983b62102087ca3cb6dd702587f004872af22e41f195c732a70329a80b8b1f3418a247c2a80ea074318c2cd2a5faf64cc04eb0398935966f15f7d830b5448287e704b98d9fbc87ef4d46099e73e23367d78c8ab714d056a9bf45cfd388431b15a7608daf8f28424e4159b30c2d94bfe9a7073359b9f2da5f206b895ee5544c2ff73c42f7e3f38b393f54bf657ddb8d36a16fab929f34b9f9f14cf7c4e5e0bff96194701bf90b34d0829c586320d04c83df1c3ba0033ba03f4e075c5f5d8b01c6478bdc29dcc25b058f0be7c44cc73a4ec1f84808028108c6058943e2a86c28947e0c9c3ab0e9f276ff5e0fd415bebf84323b695b2da8688116ac1f967c511ad91e23261050024450657efa1563ba7a734478321beffd9f15c260e99061e0637e768695b8aa8391c28f41a30aa0f86cc4fe91658b2688a5a148d2e593e128708b471d6553db92efa9a07134cff72af91e4c4fe82216d157f46e0f41c1d62e8034c17bd9309c1feaa6dbbbdd13dcb9e039f21f7f2ddaa7dbdfd7e27dbbebfdba244ea0d9419b9a7524524d1d6e3d285ac2cfc172dd88d2caf6b1f39773785bfc4f1a1c816541802432d568e52b6a55a9234f9316f52500ca54464e40d30482782526969d96235da1ecd4375b41a09447d532fad3629fcca405801436c163a325ed75b5777b48734fd9016ab0bef5026a72f42a2e7890b5fb9df51596a0abd2a25239de4b685cc8a875699376c4aa1244abe3e214fc7a2497d03308946f4d33b51edb0e3a8f9cd07277432c7f26ec67548db3bac42da63f0aca5f675e4ccfc3f98ee25e185c60bbbc6e9e2740645eafbe6e7c363af09a5511c64bf0819c4bf9b46149fd156046ac4e75ca95e7cb1e2ff951ac59c420b03941ae330dc92e7403a6f33a6747a006cb589e1770a6c75e11a51ed797632eb80d94ef4cb7d53208ac136e3dc55477332c1342bb5b7</script>
  <div class="hbe hbe-content">
    <div class="hbe hbe-input hbe-input-wave">
      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">
      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">
        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">坟墓里寂静无比，埋葬你的是所有你没说出口的话</span>
      </label>
      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">
        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>
      </svg>
    </div>
  </div>
</div>
<script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">
                                                                    </div>
                                                                    
                                                                        <div class="prev-or-next">
                                                                            <div class="post-foot-next">
                                                                                
                                                                                    <a href="/2022/10/03/2022-10-HTTP/" target="_self">
                                                                                        <i class="iconfont icon-chevronleft"></i>
                                                                                        <span>Prev</span>
                                                                                    </a>
                                                                                    
                                                                            </div>
                                                                            <div class="post-attach">
                                                                                <!-- <span class="post-pubtime">
              <i class="iconfont icon-updatetime" title="Update time"></i>
              2099-12-31
            </span> -->

                                                                                
                                                                                            <span class="post-categories">
          <!-- <i class="iconfont icon-bookmark" title="Categories"></i> -->
          
          <!-- <span class="span--category">
            <a href="/categories/Life/" title="Life">
              <b>#</b> Life
            </a>
          </span> -->
                                                                                            
                                                                                                </span>
                                                                                                
                                                                                    <span class="post-tags">
          <!-- <i class="iconfont icon-tags" title="Tags"></i> -->
          
          <!-- <span class="span--tag">
            <a href="/tags/Life/" title="Life">
              <b>#</b> Life
            </a>
          </span> -->
                                                                                    
                                                                                        </span>
                                                                                        
                                                                            </div>
                                                                            <div class="post-foot-prev">
                                                                                
                                                                                    <a href="/2099/12/31/TOP%E7%A2%8E%E7%A2%8E%E5%BF%B5/" target="_self">
                                                                                        <span>Next</span>
                                                                                        <i class="iconfont icon-chevronright"></i>
                                                                                    </a>
                                                                                    
                                                                            </div>
                                                                        </div>
                                                                        
                                                                </div>
                                                                
  <div id="btn-catalog" class="btn-catalog">
    <i class="iconfont icon-catalog"></i>
  </div>
  <div class="post-catalog hidden" id="catalog">
    <div class="title">Contents</div>
    <div class="catalog-content">
      
        <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E6%84%8F%E4%B9%89"><span class="toc-text">意义</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%8E%86%E5%8F%B2"><span class="toc-text">历史</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E7%AE%80%E5%8F%B2"><span class="toc-text">简史</span></a></li></ol></li></ol>
      
    </div>
  </div>

  
<script src="/js/catalog.js"></script>




                                                                    
                                                                        <div class="comments-container">
                                                                            







                                                                        </div>
                                                                        
                                                            </div>
                                                            
        
<div class="footer">
  <div class="social">
    <ul>
      
        <li>
          <a title="github" target="_blank" rel="noopener" href="https://github.com/Ghostasky">
            <i class="iconfont icon-github"></i>
          </a>
        </li>
      
        <li>
          <a title="twitter" target="_blank" rel="noopener" href="https://twitter.com/ghostasky">
            <i class="iconfont icon-twitter"></i>
          </a>
        </li>
      
    </ul>
  </div>
  
    
    <div class="footer-more">
      
        <a target="_blank" rel="noopener" href="https://github.com/Ghostasky">怕什么真理无穷，进一寸有进一寸的欢喜。</a>
        
    </div>
  
    
    <div class="footer-more">
      
        <a target="_blank" rel="noopener" href="https://github.com/zchengsite/hexo-theme-oranges">Copyright © 2022 Oranges</a>
        
    </div>
  
    
    <div class="footer-more">
      
        <a target="_blank" rel="noopener" href="https://github.com/zchengsite/hexo-theme-oranges">Theme by Oranges | Powered by Hexo</a>
        
    </div>
  
</div>

      </div>

      <div class="tools-bar">
        <div class="back-to-top tools-bar-item hidden">
  <a href="javascript: void(0)">
    <i class="iconfont icon-chevronup"></i>
  </a>
</div>


<script src="/js/backtotop.js"></script>



        
  <div class="search-icon tools-bar-item" id="search-icon">
    <a href="javascript: void(0)">
      <i class="iconfont icon-search"></i>
    </a>
  </div>

  <div class="search-overlay hidden">
    <div class="search-content" tabindex="0">
      <div class="search-title">
        <span class="search-icon-input">
          <a href="javascript: void(0)">
            <i class="iconfont icon-search"></i>
          </a>
        </span>
        
          <input type="text" class="search-input" id="search-input" placeholder="Search...">
        
        <span class="search-close-icon" id="search-close-icon">
          <a href="javascript: void(0)">
            <i class="iconfont icon-close"></i>
          </a>
        </span>
      </div>
      <div class="search-result" id="search-result"></div>
    </div>
  </div>

  <script type="text/javascript">
    var inputArea = document.querySelector("#search-input")
    var searchOverlayArea = document.querySelector(".search-overlay")

    inputArea.onclick = function() {
      getSearchFile()
      this.onclick = null
    }

    inputArea.onkeydown = function() {
      if(event.keyCode == 13)
        return false
    }

    function openOrHideSearchContent() {
      let isHidden = searchOverlayArea.classList.contains('hidden')
      if (isHidden) {
        searchOverlayArea.classList.remove('hidden')
        document.body.classList.add('hidden')
        // inputArea.focus()
      } else {
        searchOverlayArea.classList.add('hidden')
        document.body.classList.remove('hidden')
      }
    }

    function blurSearchContent(e) {
      if (e.target === searchOverlayArea) {
        openOrHideSearchContent()
      }
    }

    document.querySelector("#search-icon").addEventListener("click", openOrHideSearchContent, false)
    document.querySelector("#search-close-icon").addEventListener("click", openOrHideSearchContent, false)
    searchOverlayArea.addEventListener("click", blurSearchContent, false)

    var searchFunc = function (path, search_id, content_id) {
      'use strict';
      var $input = document.getElementById(search_id);
      var $resultContent = document.getElementById(content_id);
      $resultContent.innerHTML = "<ul><span class='local-search-empty'>First search, index file loading, please wait...<span></ul>";
      $.ajax({
        // 0x01. load xml file
        url: path,
        dataType: "xml",
        success: function (xmlResponse) {
          // 0x02. parse xml file
          var datas = $("entry", xmlResponse).map(function () {
            return {
              title: $("title", this).text(),
              content: $("content", this).text(),
              url: $("url", this).text()
            };
          }).get();
          $resultContent.innerHTML = "";

          $input.addEventListener('input', function () {
            // 0x03. parse query to keywords list
            var str = '<ul class=\"search-result-list\">';
            var keywords = this.value.trim().toLowerCase().split(/[\s\-]+/);
            $resultContent.innerHTML = "";
            if (this.value.trim().length <= 0) {
              return;
            }
            // 0x04. perform local searching
            datas.forEach(function (data) {
              var isMatch = true;
              var content_index = [];
              if (!data.title || data.title.trim() === '') {
                data.title = "Untitled";
              }
              var orig_data_title = data.title.trim();
              var data_title = orig_data_title.toLowerCase();
              var orig_data_content = data.content.trim().replace(/<[^>]+>/g, "");
              var data_content = orig_data_content.toLowerCase();
              var data_url = data.url;
              var index_title = -1;
              var index_content = -1;
              var first_occur = -1;
              // only match artiles with not empty contents
              if (data_content !== '') {
                keywords.forEach(function (keyword, i) {
                  index_title = data_title.indexOf(keyword);
                  index_content = data_content.indexOf(keyword);

                  if (index_title < 0 && index_content < 0) {
                    isMatch = false;
                  } else {
                    if (index_content < 0) {
                      index_content = 0;
                    }
                    if (i == 0) {
                      first_occur = index_content;
                    }
                    // content_index.push({index_content:index_content, keyword_len:keyword_len});
                  }
                });
              } else {
                isMatch = false;
              }
              // 0x05. show search results
              if (isMatch) {
                str += "<li><a href='" + data_url + "' class='search-result-title'>" + orig_data_title + "</a>";
                var content = orig_data_content;
                if (first_occur >= 0) {
                  // cut out 100 characters
                  var start = first_occur - 20;
                  var end = first_occur + 80;

                  if (start < 0) {
                    start = 0;
                  }

                  if (start == 0) {
                    end = 100;
                  }

                  if (end > content.length) {
                    end = content.length;
                  }

                  var match_content = content.substr(start, end);

                  // highlight all keywords
                  keywords.forEach(function (keyword) {
                    var regS = new RegExp(keyword, "gi");
                    match_content = match_content.replace(regS, "<span class=\"search-keyword\">" + keyword + "</span>");
                  });

                  str += "<p class=\"search-result-abstract\">" + match_content + "...</p>"
                }
                str += "</li>";
              }
            });
            str += "</ul>";
            if (str.indexOf('<li>') === -1) {
              return $resultContent.innerHTML = "<ul><span class='local-search-empty'>No result<span></ul>";
            }
            $resultContent.innerHTML = str;
          });
        },
        error: function(xhr, status, error) {
          $resultContent.innerHTML = ""
          if (xhr.status === 404) {
            $resultContent.innerHTML = "<ul><span class='local-search-empty'>The search.xml file was not found, please refer to：<a href='https://github.com/zchengsite/hexo-theme-oranges#configuration' target='_black'>configuration</a><span></ul>";
          } else {
            $resultContent.innerHTML = "<ul><span class='local-search-empty'>The request failed, Try to refresh the page or try again later.<span></ul>";
          }
        }
      });
      $(document).on('click', '#search-close-icon', function() {
        $('#search-input').val('');
        $('#search-result').html('');
      });
    }

    var getSearchFile = function() {
        var path = "/search.xml";
        searchFunc(path, 'search-input', 'search-result');
    }
  </script>




        
  <div class="tools-bar-item theme-icon" id="switch-color-scheme">
    <a href="javascript: void(0)">
      <i id="theme-icon" class="iconfont icon-moon"></i>
    </a>
  </div>

  
<script src="/js/colorscheme.js"></script>





        
  
    <div class="share-icon tools-bar-item">
      <a href="javascript: void(0)" id="share-icon">
        <i class="iconfont iconshare"></i>
      </a>
      <div class="share-content hidden">
        
          <a class="share-item" href="https://twitter.com/intent/tweet?text=' + %E8%83%A1%E8%A8%80%E4%B9%B1%E8%AF%AD%26%E8%87%AA%E8%A8%80%E8%87%AA%E8%AF%AD + '&url=' + https%3A%2F%2Fghostasky.github.io%2F2099%2F12%2F31%2FTOP%2F + '" target="_blank" title="Twitter">
            <i class="iconfont icon-twitter"></i>
          </a>
        
        
          <a class="share-item" href="https://www.facebook.com/sharer.php?u=https://ghostasky.github.io/2099/12/31/TOP/" target="_blank" title="Facebook">
            <i class="iconfont icon-facebooksquare"></i>
          </a>
        
      </div>
    </div>
  
  
<script src="/js/shares.js"></script>



      </div>
    </div>
  </body>
</html>
